package com.example.demo3udp2;

import java.net.DatagramPacket;
import java.net.DatagramSocket;

/**
 * 目标：完成UDP通信多发多收：服务端开发。
 */
public class UDPServerDemo2 {
    public static void main(String[] args) throws Exception {
        System.out.println("===服务端启动===");
        // 1.创建一个接收端的对象，注册端口
        DatagramSocket socket = new DatagramSocket(8080);

        // 2.创建一个数据包对象，用于封装接收到的数据
        byte[] bytes = new byte[1024 * 64];
        DatagramPacket packet = new DatagramPacket(bytes, bytes.length);

        while (true) {
            // 3.接收数据,将数据封装到字节数组中去
            socket.receive(packet); // 阻塞式接收数据

            // 4.解析数据(把字节数组扔给String的构造器即可)
            int len = packet.getLength();  // 获取当前收到的数据长度
            String str = new String(bytes, 0, len);
            System.out.println("服务端收到了：" + str);

            // 获取对方的ip对象和程序端口
            String ip = packet.getAddress().getHostAddress();
            int port = packet.getPort();
            System.out.println("对方ip：" + ip + "   对方端口：" + port);

            System.out.println("-----------------------------------");
        }
    }
}
